package fun.chutianshu;

import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) {
	// write your code here
        List<String> stringList = new ArrayList();

        stringList.add("5");
        stringList.add("10");
        stringList.add("15");
        stringList.add("20");
        stringList.add("25");



        for (String s:stringList) {
            System.out.println(s);
        }

        System.out.println();
        System.out.println("##############################");
        System.out.println();

        stringList.add(2,"35");

        for (String s:stringList) {
            System.out.println(s);
        }

        System.out.println();
        System.out.println("##############################");
        System.out.println();

        //调用非泛型方法
        replace(stringList,2,"50");

        for (String s:stringList) {
            System.out.println(s);
        }

        System.out.println();
        System.out.println("##############################");
        System.out.println();

        //调用泛型方法
        replaceT(stringList,2,"100");

        for (String s:stringList) {
            System.out.println(s);
        }

        System.out.println();
        System.out.println("##############################");
        System.out.println();

        //使用整形 Integer 作为列表项
        List<Integer> integerList = new ArrayList<>();
        integerList.add(Integer.valueOf(5));
        integerList.add(Integer.valueOf(10));
        integerList.add(Integer.valueOf(15));
        integerList.add(Integer.valueOf(20));
        integerList.add(Integer.valueOf(25));

        for (Integer integer:integerList) {
            System.out.println(integer.toString());
        }

        System.out.println();
        System.out.println("##############################");
        System.out.println();

        //提换整型列表中的一个值
        //在这里 T 代表 Integer
        replaceT(integerList,2,Integer.valueOf(100));
        for (Integer integer:integerList) {
            System.out.println(integer.toString());
        }
    }

    //不使用泛型
    public static void replace(List list,int index,String s){
        list.remove(index);
        list.add(index,s);
    }

    //使用泛型
    // 提换一个字符串数组列表中，指定索引位置的字符串
    // 在使用不确定的数据类型作为参数时，就要使用泛型函数
    // 格式：访问类型 <T> 返回值类型 方法名(参数列表，如果用到泛型的话，用 T 代替)
    public static <T> void replaceT(List<T> list,int index,T t){
        list.remove(index);
        list.add(index,t);
    }
}
